#include "pch.hpp"
#include "Controller.hpp"

using namespace Engine;
using namespace Engine::Debugger;




Controller::Controller(MessageWriter::ptr writer, MessageReader::ptr reader)
	: m_writer(writer)
	, m_reader(reader)
{}
///////////////////////////////////////////////////////////////////////////////////////////////////

Controller::~Controller()
{}
///////////////////////////////////////////////////////////////////////////////////////////////////




void Controller::pull()
{
	Message::ptr message;

	do
	{
		*m_reader >> message;
		if(message)
		{
			if(boost::shared_dynamic_cast<Response>(message))
			{
				auto response = boost::shared_static_cast<Response>(message);

				// TODO: synchronize
				auto n = m_tasks.find(response->tag());
				if(n != m_tasks.end())
				{
					n->second->setResponse(response);
					m_tasks.erase(n);
				}
			}
		}
	} while(message != nullptr);
}
///////////////////////////////////////////////////////////////////////////////////////////////////
